//对axios进行二次封装( 实例化axios对象, 设置请求拦截器, 设置响应拦截器 )
import axios from 'axios'

//实例化axios对象
var service = axios.create({
    baseURL:process.env.REACT_APP_BASE_URL,//基准路径
    timeout: 10 * 1000, //超时时间
})

//设置请求拦截器
service.interceptors.request.use(
    (config) => {
        //一般情况下,在这里设置请求头( 这些请求头应该是服务端必须要求携带的 )
        //config.headers['Authorization'] = "Bearer" + " " + localStorage.getItem('token');
        //config.headers.Authorization = "Bearer" + " " + localStorage.getItem('token');
        config.headers.Authorization =`Bearer${localStorage.getItem('token')}`;
        return config;
    },

    (err) => {
        return Promise.reject(err)
    },
)

//设置响应拦截器
service.interceptors.response.use(
    (res) => {
        return res;
    },

    (err) => {
        //一般情况下, 在这里处理服务端返回的错误码

        if (err.response.status === 401) {
            alert('身份验证失败,登陆过期,请重新登录');
            //跳转到登录页
            //删除过期的token
        }
        else if (err.response.status === 404) {
            alert('访问路径有误!');
        }
        else if (err.response.status === 500) {
            alert('服务器内部错误!');
        }

        return Promise.reject(err)
    },
)

export default service;